package main

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	// 默认启用了两个中间件(Logger、Recovery)
	r.Use(gin.Recovery()) // 错误恢复
	r.Use(gin.Logger())   // 日志
	// 路由组
	v1 := r.Group("/v1")
	{
		// 为路由组添加中间件
		v1.Use(func(ctx *gin.Context) {
			fmt.Println("经过了路由组中间件")
			ctx.Set("name", "tom")
			ctx.Next()
		})
		v1.GET("/list", func(ctx *gin.Context) {
			name, _ := ctx.Get("name")
			fmt.Println("name:", name)
			ctx.String(200, "这是商品列表")
		})
		v1.GET("/test_panic", func(ctx *gin.Context) {
			name, _ := ctx.Get("name")
			v, _ := name.(string)
			if v == "tom" {
				panic("遇到了错误")
			} else {
				ctx.String(200, "测试panic")
			}

		})
	}

	r.Run(":8080")

}
